import apiClient from './config'

/**
 * 用户管理相关 API
 */
export const usersAPI = {
  /**
   * 获取用户列表（分页）
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页大小
   * @param {string} params.role - 用户角色过滤
   * @param {string} params.status - 用户状态过滤
   * @param {string} params.keyword - 搜索关键词
   * @returns {Promise} 用户列表
   */
  getUsers(params = {}) {
    return apiClient.get('/users', { params })
  },

  /**
   * 根据ID获取用户详情
   * @param {number} userId - 用户ID
   * @returns {Promise} 用户详情
   */
  getUserById(userId) {
    return apiClient.get(`/users/${userId}`)
  },

  /**
   * 创建用户
   * @param {Object} userData - 用户数据
   * @param {string} userData.username - 用户名
   * @param {string} userData.password - 密码
   * @param {string} userData.realName - 真实姓名
   * @param {string} userData.phone - 手机号
   * @param {string} userData.email - 邮箱
   * @param {string} userData.address - 地址
   * @param {string} userData.role - 角色（admin/station_manager/customer）
   * @returns {Promise} 创建结果
   */
  createUser(userData) {
    return apiClient.post('/users', userData)
  },

  /**
   * 更新用户信息
   * @param {number} userId - 用户ID
   * @param {Object} userData - 更新的用户数据
   * @returns {Promise} 更新结果
   */
  updateUser(userId, userData) {
    return apiClient.put(`/users/${userId}`, userData)
  },

  /**
   * 删除用户
   * @param {number} userId - 用户ID
   * @returns {Promise} 删除结果
   */
  deleteUser(userId) {
    return apiClient.delete(`/users/${userId}`)
  },

  /**
   * 批量删除用户
   * @param {number[]} userIds - 用户ID列表
   * @returns {Promise} 删除结果
   */
  batchDeleteUsers(userIds) {
    return apiClient.delete('/users/batch', { data: { userIds } })
  },

  /**
   * 启用/禁用用户
   * @param {number} userId - 用户ID
   * @param {string} status - 状态（active/inactive）
   * @returns {Promise} 操作结果
   */
  updateUserStatus(userId, status) {
    return apiClient.patch(`/users/${userId}/status`, { status })
  },

  /**
   * 切换用户状态
   * @param {number} userId - 用户ID
   * @returns {Promise} 切换结果
   */
  toggleUserStatus(userId) {
    return apiClient.put(`/users/${userId}/toggle-status`)
  },

  /**
   * 重置用户密码
   * @param {number} userId - 用户ID
   * @param {string} newPassword - 新密码
   * @returns {Promise} 重置结果
   */
  resetUserPassword(userId, newPassword) {
    return apiClient.patch(`/users/${userId}/password`, { newPassword })
  },

  /**
   * 获取用户统计信息
   * @returns {Promise} 统计信息
   */
  getUserStats() {
    return apiClient.get('/users/stats')
  },

  /**
   * 导出用户数据
   * @param {Object} params - 导出参数
   * @returns {Promise} 导出文件
   */
  exportUsers(params = {}) {
    return apiClient.get('/users/export', { 
      params,
      responseType: 'blob'
    })
  },

  /**
   * 获取当前用户信息
   * @returns {Promise} 当前用户信息
   */
  getCurrentUser() {
    return apiClient.get('/users/me')
  },

  /**
   * 修改密码
   * @param {Object} passwordData - 密码数据
   * @param {string} passwordData.currentPassword - 当前密码
   * @param {string} passwordData.newPassword - 新密码
   * @returns {Promise} 修改结果
   */
  changePassword(passwordData) {
    return apiClient.post('/users/change-password', passwordData)
  },

  /**
   * 获取当前用户统计数据
   * @returns {Promise} 统计数据
   */
  getMyStats() {
    return apiClient.get('/users/me/stats')
  },

  /**
   * 获取当前用户的通知设置
   * @returns {Promise} 通知设置
   */
  getNotificationSettings() {
    return apiClient.get('/users/me/notification-settings')
  },

  /**
   * 更新当前用户的通知设置
   * @param {Object} settings - 通知设置
   * @param {boolean} settings.orderStatus - 订单状态通知
   * @param {boolean} settings.priceChange - 价格变动通知
   * @param {boolean} settings.systemMessage - 系统消息通知
   * @param {boolean} settings.emailNotification - 邮件通知
   * @returns {Promise} 更新结果
   */
  updateNotificationSettings(settings) {
    return apiClient.put('/users/me/notification-settings', settings)
  }
}
